package chemtools_logica.LN.SFBean;

import chemtools_logica.BDL.IR.BDL_SFEmpresaRemote;
import chemtools_logica.BDL.IR.BDL_SFRolxpermisosRemote;

import chemtools_logica.BDL.IR.BDL_SFUbigeoRemote;

import chemtools_logica.Beans.EmpresaBean;

import chemtools_logica.Beans.OrdenproduccionBean;

import chemtools_logica.Entidades.Empresa;

import chemtools_logica.Entidades.Ubigeo;

import chemtools_logica.LN.IL.LN_SFEmpresaLocal;
import chemtools_logica.LN.IR.LN_SFEmpresaRemote;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import javax.ejb.EJB;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless(name = "LN_SFEmpresa", mappedName = "map-LN_SFEmpresa")
public class LN_SFEmpresaBean implements LN_SFEmpresaRemote, LN_SFEmpresaLocal {
    @Resource
    SessionContext sessionContext;
    @PersistenceContext(unitName = "Chemtools_Logica")
    private EntityManager em;
    
    @EJB
    BDL_SFEmpresaRemote bDL_SFEmpresaRemote;
    @EJB
    BDL_SFUbigeoRemote bDL_SFUbigeoRemote;
    
    public List<EmpresaBean> getAllEmpresas(){
        List<Empresa> empresas = bDL_SFEmpresaRemote.getEmpresaFindAll();
        List<EmpresaBean> beanEmpresas = new ArrayList<EmpresaBean>();
        
        beanEmpresas=convertListEntitytoBean(empresas);
        
        return beanEmpresas;
    }
    
    public List<EmpresaBean> getListEmpresaBusqueda(EmpresaBean beanEmpresa){
        List<Empresa> listaEntidad=bDL_SFEmpresaRemote.getAllEmpresasbyFiltro(beanEmpresa);
        List<EmpresaBean> listaBean= new ArrayList<EmpresaBean>();
        
        listaBean=convertListEntitytoBean(listaEntidad);
        
        return listaBean;
    }
    
    public void addEmpresa(EmpresaBean beanEmpresa){
        Empresa entidad = new Empresa();
        
        entidad = this.convertBeantoEntity(beanEmpresa, 1);
        
        bDL_SFEmpresaRemote.insertEmpresa(entidad);
    }
    
    public void editarEmpresa(EmpresaBean beanEmpresa){
        Empresa entidad = new Empresa();
        
        entidad = this.convertBeantoEntity(beanEmpresa, 0);
        
        bDL_SFEmpresaRemote.mergeEmpresa(entidad);
    }
    
    public boolean verificarRucDupl(String ruc){
        boolean exi=bDL_SFEmpresaRemote.existeRucEmpresa(ruc);
        return exi;
    }   
    
    public boolean verificarRazonSocial(String razonSocial){
        boolean exi=bDL_SFEmpresaRemote.existeRazonSocialEmpresa(razonSocial);
        return exi;
    }
    
    public List<EmpresaBean> convertListEntitytoBean(List<Empresa> listaEntidad){
        List<EmpresaBean> listaBean = new ArrayList<EmpresaBean>();
        
        for(Empresa entidad : listaEntidad){
            EmpresaBean bean = new EmpresaBean();
            bean=convertEntitytoBean(entidad);
            listaBean.add(bean);
        }
        
        return listaBean;
    }
    
    public EmpresaBean convertEntitytoBean(Empresa entidad){
        EmpresaBean bean= new EmpresaBean();
        
            bean.setIdEmpresa(entidad.getIdEmpresa());
            bean.setRazonSocial(entidad.getRazonSocial());
            bean.setRuc(entidad.getRuc());
            bean.setTipo(entidad.getTipo());
            bean.setIdDepartamento(entidad.getIdDepartamento());
            bean.setIdDistrito(entidad.getIdDistrito());
            bean.setIdProvicia(entidad.getIdProvicia());
            bean.setNombreEncargado(entidad.getNombreEncargado());
            bean.setPaginaWeb(entidad.getPaginaWeb());
            bean.setEstado(entidad.getEstado());
            bean.setDireccion(entidad.getDireccion());
            bean.setTelefono(entidad.getTelefono());
            bean.setCorreo(entidad.getCorreo());
            
        //Ubigeo ubigeo = bDL_SFEmpresaRemote.getDatosUbigeo(entidad.getIdDepartamento(), entidad.getIdProvicia(), entidad.getIdDistrito());
        List<Ubigeo> ubigeo=bDL_SFUbigeoRemote.getUbigeo(entidad.getIdDepartamento(), entidad.getIdProvicia(), entidad.getIdDistrito());
            bean.setNombreDepartamento(ubigeo.get(0).getDepartamento());
            bean.setNombreProvincia(ubigeo.get(0).getProvincia());
            bean.setNombreDistrito(ubigeo.get(0).getDistrito());
            
            if(entidad.getEstado() == 0){
                bean.setStyleEstado("background-color:#EAB7B7;color:#675a5a;");
            }else{
                bean.setStyleEstado("background-color:#C9E5F6;color:#675a5a;");
            }           
        return bean;
    }
    
    public Empresa convertBeantoEntity(EmpresaBean beanEmpresa , int opccion){
        Empresa entidadEmpresa = new Empresa();
        
        if(opccion == 0){
            entidadEmpresa.setIdEmpresa(beanEmpresa.getIdEmpresa());
        }
        
        entidadEmpresa.setDireccion(beanEmpresa.getDireccion());
        entidadEmpresa.setEstado(beanEmpresa.getEstado());
        entidadEmpresa.setIdDepartamento(beanEmpresa.getIdDepartamento());
        entidadEmpresa.setIdDistrito(beanEmpresa.getIdDistrito());
        entidadEmpresa.setIdProvicia(beanEmpresa.getIdProvicia());
        entidadEmpresa.setNombreEncargado(beanEmpresa.getNombreEncargado());
        entidadEmpresa.setPaginaWeb(beanEmpresa.getPaginaWeb());
        entidadEmpresa.setRazonSocial(beanEmpresa.getRazonSocial());
        entidadEmpresa.setRuc(beanEmpresa.getRuc());
        entidadEmpresa.setTipo(beanEmpresa.getTipo());
        entidadEmpresa.setTelefono(beanEmpresa.getTelefono());
        entidadEmpresa.setCorreo(beanEmpresa.getCorreo());
        
        
        return entidadEmpresa;        
    }
}
